package com.project.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.project.bean.GoodsBean;

public interface IGoodsService {

    /**
     * 查看库存商品信息
     * 输入：商品编号
     * 处理：根据商品编号查询库存商品信息
     * 输出：库存商品对象
     * 库存商品（商品编号，商品名称，商品图片，类别，品牌，库存量，最新采购价，建议销售价）
     * @param goodsId
     * @return
     */
    GoodsBean findById(Integer goodsId);


    /**
     * 添加库存商品(用于下列方法第一步)
     *
     * 添加采购商品
     * 输入：操作类型（add/update），库存商品对象，图片上传对象，采购数量
     * 处理：
     * 1、判断操作类型是否为add，如果为add，完成库存商品添加。
     * 2、从session中，取出登陆用户对象。
     * 3、按用户ID，库存商品ID，查询采购车信息。
     * 如果采购车信息为null，则添加采购车记录
     * 如果采购车信息不为null，则累加采购车商品数量
     * 输出：ok
     */
    void add(GoodsBean goodsBean);

    /**
     * 修改库存商品最新采购价
     * @param goodsId
     * @param newPrice
     */
    void updateLastPrice(Integer goodsId,Integer newPrice);

    /**
     * 修改库存数量
     * @param goodsId 库存商品id
     * @param deltaNum 数量的变化量，正数表示增加，负数表示减少
     */
    void updateNum(Integer goodsId,Integer deltaNum);

    /**
     * 分页动态查询库存商品
     * 输入：页码，商品名称，起始数量，结束数量，是否定价，类别
     * 处理：分页动态查询库存
     * 输出：分页对象
     * 库存商品信息：商品编号、商品名、类别、品牌、库存数量
     * @param pageNum
     * @param goodsName
     * @param minNum
     * @param maxNum
     * @param isSuggestPrice
     * @param type
     * @return
     */
    public IPage<GoodsBean> cutFindByItem(Integer pageNum, String goodsName,
                                          Integer minNum, Integer maxNum, String isSuggestPrice, String type);
    /**
     * 修改建议销售价
     * 输入：商品编号，建议销售价
     * 处理：根据商品编号，修改新建议销售价
     * 处理：ok
     * @param goodsId
     * @param newSuggestPrice
     * @return
     */
    public void updateSuggestPrice(Integer goodsId,Integer newSuggestPrice);
}
